<?php

class time
{
	private static $oLang;
	
	public function __construct ()
	{
		if (is_null(self::$oLang))
		{
			self::$oLang = new languageModel('time');
		}
	}
	
	/**
	 * Deze methode geeft de naam terug van de opgegeven dag in de juiste taal.
	 * @param	integer		$iDay			dagnummer; Zondag = 0, Zaterdag = 6
	 * @return	string						Dagnaam
	 */
	public function numToDayname ($iDay)			{ return strftime("%A", mktime(0,0,0,5,(int) $iDay+1,2005)); }
	
	/**
	 * Deze methode geeft de afgekorte naam terug van de opgegeven dag in de juiste taal.
	 * @param	integer		$iDay			dagnummer; Zondag = 0, Zaterdag = 6
	 * @return	string						Dagnaam
	 */
	public function numToShortDayname ($iDay)		{ return strftime("%a", mktime(0,0,0,5,(int) $iDay+1,2005)); }
	
	/**
	 * Deze methode maakt van de tijdstring de tijd in 'H:i' formaat
	 * Iedere tijd die voldoet aan http://www.gnu.org/software/tar/manual/tar.html#Date-input-formats
	 * is toegestaan
	 * @param	string		$sTime			tijdstip; (HH:mm:ss; HH:mm, HH:mm pm ...)
	 * @return	string						tijdstip in HH:mm
	 */
	public function shortTime ($sTime)				{ return date('H:i', strtotime($sTime)); }
	/**
	 * Deze methode maakt van de tijdstring de tijd in 'H:i:s' formaat
	 * Iedere tijd die voldoet aan http://www.gnu.org/software/tar/manual/tar.html#Date-input-formats
	 * is toegestaan
	 * @param	string		$sTime			tijdstip; (HH:mm:ss; HH:mm, HH:mm pm ...)
	 * @return	string						tijdstip in HH:mm
	 */
	public function longTime ($sTime)				{ return date('H:i:s ', $sTime).self::get_microseconds($sTime); }
	
	public function daysInMonth ($sDate)			{ return date("t", strtotime($sDate)); }				//28-31
	
	public function __call ($sMethod, $aArgs)
	{
		$sTime = (is_numeric($aArgs[0]) && strlen($aArgs[0]) == 10) ? date('r', $aArgs[0]) : $aArgs[0];
		
		$mReturn = false;
		if (self::$oLang[$sMethod] !== false)
		{
			$mReturn = utf8_encode(strftime(self::$oLang[$sMethod], strtotime($sTime)));
		}
		return $mReturn;
	}
	
	
	public static function get_microtime()
	{
		//php 4 stuff ;-)
		//list($iMsec, $iSec)	= explode(' ', microtime());
		//return (float) $iMsec + (float) $iSec;
		return microtime(true);
	}
	
	
	public static function get_microseconds ($iTime)
	{
		if (is_double($iTime))
		{
			@list($sec, $usec) = explode(".", $iTime);
		}
		else
		{
			@list($usec, $sec) = explode(" ", $iTime);
		}
		return $usec;
	}
}

?>